#include "device_control.h"
#include "device_windows.h"

// ==============================
// 设备按钮事件回调
// ==============================

/**
 * @brief 台灯按钮事件回调
 * @param e 事件对象
 *
 * 处理台灯按钮点击事件，创建或激活台灯控制窗口
 */
void lamp_btn_event_cb(lv_event_t * e)
{
    printf("Lamp button clicked\n"); // 输出调试信息

    if(lv_event_get_code(e) == LV_EVENT_CLICKED) { // 检查是否为点击事件
        printf("Current win: %p\n", current_win);  // 输出当前窗口指针

        if(current_win) {                                             // 如果窗口已存在
            printf("Moving window to foreground: %p\n", current_win); // 输出调试信息
            lv_obj_move_foreground(current_win);                      // 将窗口移动到前台
            return;                                                   // 直接返回
        }

        printf("Creating new lamp window\n");            // 输出调试信息
        current_win = create_lamp_window(lv_scr_act());  // 创建新的台灯窗口
        printf("New window created: %p\n", current_win); // 输出新窗口指针
    }
}

/**
 * @brief 空调按钮事件回调
 * @param e 事件对象
 *
 * 处理空调按钮点击事件，创建或激活空调控制窗口
 */
void air_btn_event_cb(lv_event_t * e)
{
    printf("Air button clicked\n"); // 输出调试信息

    if(lv_event_get_code(e) == LV_EVENT_CLICKED) { // 检查是否为点击事件
        printf("Current win: %p\n", current_win);  // 输出当前窗口指针

        if(current_win) {                                             // 如果窗口已存在
            printf("Moving window to foreground: %p\n", current_win); // 输出调试信息
            lv_obj_move_foreground(current_win);                      // 将窗口移动到前台
            return;                                                   // 直接返回
        }

        printf("Creating new air window\n");             // 输出调试信息
        current_win = create_air_window(lv_scr_act());   // 创建新的空调窗口
        printf("New window created: %p\n", current_win); // 输出新窗口指针
    }
}

/**
 * @brief 窗帘按钮事件回调
 * @param e 事件对象
 *
 * 处理窗帘按钮点击事件，创建或激活窗帘控制窗口
 */
void curtain_btn_event_cb(lv_event_t * e)
{
    printf("Curtain button clicked\n"); // 输出调试信息

    if(lv_event_get_code(e) == LV_EVENT_CLICKED) { // 检查是否为点击事件
        printf("Current win: %p\n", current_win);  // 输出当前窗口指针

        if(current_win) {                                             // 如果窗口已存在
            printf("Moving window to foreground: %p\n", current_win); // 输出调试信息
            lv_obj_move_foreground(current_win);                      // 将现有窗口前置
            return;                                                   // 直接返回
        }

        printf("Creating new curtain window\n");           // 输出调试信息
        current_win = create_curtain_window(lv_scr_act()); // 创建新的窗帘窗口
        printf("New window created: %p\n", current_win);   // 输出新窗口指针
    }
}

/**
 * @brief 智能灯按钮事件回调
 * @param e 事件对象
 *
 * 处理智能灯按钮点击事件，创建或激活智能灯控制窗口
 */
void smart_lamp_btn_event_cb(lv_event_t * e)
{
    printf("Smart lamp button clicked\n"); // 输出调试信息

    if(lv_event_get_code(e) == LV_EVENT_CLICKED) { // 检查是否为点击事件
        printf("Current win: %p\n", current_win);  // 输出当前窗口指针

        if(current_win) {                                             // 如果窗口已存在
            printf("Moving window to foreground: %p\n", current_win); // 输出调试信息
            lv_obj_move_foreground(current_win);                      // 将现有窗口前置
            return;                                                   // 直接返回
        }

        printf("Creating new smart lamp window\n");           // 输出调试信息
        current_win = create_smart_lamp_window(lv_scr_act()); // 创建新的智能灯窗口
        printf("New window created: %p\n", current_win);      // 输出新窗口指针
    }
}